package com.pig4cloud.pigx.strategy.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 新增止盈止损委托
 *
 * @since 2022/9/6 20:43
 */
@Data
public class StrategyStopOrderContractAddDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 日志id
     */
    private Long logId;

    /**
     * 任务id
     */
    @ApiModelProperty(value = "任务id", required = true)
    @NotNull(message = "数据异常，taskId为空")
    private Long taskId;

    /**
     * 方向（0做多、1做空）
     */
    @ApiModelProperty(value = "方向（0做多、1做空）", required = true)
    @NotBlank(message = "数据异常，side为空")
    private String side;

    /**
     * 数量类型（0张数、1百分比）
     */
    @ApiModelProperty(value = "数量类型（0张数、1百分比）")
    @NotBlank(message = "数据异常，numType为空")
    private String numType;

    /**
     * 委托数量
     */
    @ApiModelProperty(value = "委托数量", required = true)
    @Min(value = 1, message = "委托数量最小为1")
    private Integer num;

    /**
     * 委托百分比数量（只支持100%）
     */
    @ApiModelProperty(value = "委托百分比数量（只支持100%）")
    @DecimalMin(value = "0.01", message = "委托数量百分比最小为0.01")
    @DecimalMax(value = "100", message = "委托数量百分比最大为100")
    private BigDecimal numPercent;

    /**
     * 是否止盈（0否、1是）
     */
    @ApiModelProperty(value = "是否止盈（0否、1是）", required = true)
    @NotBlank(message = "数据异常，hasStopProfit为空")
    private String hasStopProfit;

    /**
     * 止盈触发价格，是否止盈为是时不能为空
     */
    @ApiModelProperty(value = "止盈触发价格，是否止盈为是时不能为空")
    private BigDecimal stopProfitTrigger;

    /**
     * 止盈价格类型（0市价、1限价），是否止盈为是时不能为空
     */
    @ApiModelProperty(value = "止盈价格类型（0市价、1限价），是否止盈为是时不能为空")
    private String stopProfitType;

    /**
     * 止盈价格，止盈价格类型为限价时不能为空
     */
    @ApiModelProperty(value = "止盈价格，止盈价格类型为限价时不能为空")
    private BigDecimal stopProfitPrice;

    /**
     * 是否止损（0否、1是）
     */
    @ApiModelProperty(value = "是否止损（0否、1是）", required = true)
    @NotBlank(message = "数据异常，hasStopLost为空")
    private String hasStopLost;

    /**
     * 止损触发价格，是否止损为是时不能为空
     */
    @ApiModelProperty(value = "止损触发价格，是否止损为是时不能为空")
    private BigDecimal stopLostTrigger;

    /**
     * 止损价格类型（0市价、1限价），是否止损为是时不能为空
     */
    @ApiModelProperty(value = "止损价格类型（0市价、1限价），是否止损为是时不能为空")
    private String stopLostType;

    /**
     * 止损价格，止损价格类型为限价时不能为空
     */
    @ApiModelProperty(value = "止损价格，止损价格类型为限价时不能为空")
    private BigDecimal stopLostPrice;
}
